--数组部分，--> 索引从1开始(lua特色),
local list_table = {1, 2, 3, 4, 5}
--数组部分你的访问，从索引(1)开始，
--非数组部分，就是我们的key来访问的
print(list_table[1], list_table[2], list_table[3])
list_table[11] = 11
list_table.test_key = "test_value"
print(list_table["test_key"])
print(list_table[11])
--返回lua表里面数组部分的长度
-- 必须要求是连续的
print(#list_table) -- 必须要求索引是连续的 输出5，实际是6个元素
--end

print("============");
list_table = {
	[1] = 11,
	[2] = 22,
	[3] = 33,

	[5] = 55,
	str1 = "str1",
}
print(#list_table) ; -- 输出3,必须是连续的

--遍历lua里面的数组部分的数据
print("==========遍历lua里面的数组部分的数据=========");
local index = 1
for index = 1, #list_table do 
	print(list_table[index])
end
--输出 11 22 33
--end

print("#######")
--遍历lua表里面的数组部分:
local k, v
for k, v in ipairs(list_table) do 
	print(k, v)
end
--end


print("&&&&&&&&")
print("==========遍历表里面所有的数据=========");
--遍历表里面所有的数据
-- for k, v in pairs(list_table) do 
-- 	print(k, v)
-- end
--end

--输出全部
function display_table(list)
	for k, v in pairs(list) do 
		print(k, v)
	end
end

display_table(list_table);

--往数组部分里面插入一个元素
table.insert(list_table,2,8) --往第2个位置插入8
display_table(list_table);

table.remove(list_table, 2) --移除下标为2的数据
display_table(list_table);

--获取表中元素个数，包含数组部分和非数组部分
--table.getn 和 #类似
-- local x = table.getn(list_table);
-- print(x)

--对数组排序
print("=========对数组排序===========")
local array_data = {1,3,5,7,9,2,4,6,8,0}
table.sort(array_data);  --默认升序
display_table(array_data);

--使用自己的比较函数
function comp_shengxu(lhs, rhs)
	if lhs < rhs then
		return true
	else
		return false
	end
end

function comp_jiangxu(lhs,rhs )
	if lhs > rhs then
		return true
	else
		return false
	end
end

print("=========对数组排序1_升序===========")
table.sort(array_data,comp_shengxu);
display_table(array_data)

print("=========对数组排序2_降序===========")
table.sort(array_data,comp_jiangxu);
display_table(array_data)

print("=========对数组随机排序=======")
local function comp_random(lhs, rhs)
	if math.random() > 0.5 then
		return false
	else
		return true
	end
end
table.sort(array_data, comp_random)
display_table(array_data)